//-----------------------------------------------------------------------
// <copyright file="Chosen.cs" company="tuliprules.org">
//     Copyright (c) 2010 tuplelister, tuliprules.org.
// </copyright>
// <summary>This is the Chosen class.</summary>
//-----------------------------------------------------------------------

namespace Tulip.Benchmarks.Manners.Model
{
    /// <summary>
    /// Miss Mannners - Chosen class
    /// </summary>
    /// <remarks>
    /// Represents a guest tuple selected by hobby.   The use of the Chosen
    /// class in strictly redunadant in Miss Manners, but adds to the 
    /// computational stress placed on the Rules Engine.
    /// </remarks>
    public class Chosen
    {

        /// <summary>
        /// A seating ID for the chosen guest.
        /// </summary>
        private int id;

        /// <summary>
        /// The hobby of the chosen guest.
        /// </summary>
        private string hobby;

        /// <summary>
        /// The name of the chosen guest.
        /// </summary>
        private string name;

        /// <summary>
        /// Initializes a new instance of the <see cref="Chosen"/> class. 
        /// </summary>
        /// <param name="id">
        /// Seating ID
        /// </param>
        /// <param name="name">
        /// Guest name
        /// </param>
        /// <param name="hobby">
        /// Guest hobby
        /// </param>
        public Chosen(int id, string name, string hobby)
        {
            this.id = id;
            this.name = name;
            this.hobby = hobby;
        }

        /// <summary>
        /// Gets or sets a seating ID for the chosen guest.
        /// </summary>
        public int Id
        {
            get
            {
                return this.id;
            }

                    set
            {
                this.id = value;
            }
        }

        /// <summary>
        /// Gets or sets the name of the chosen guest.
        /// </summary>
        public string Name
        {
            get
            {
                return this.name;
            }

            set
            {
                this.name = value;
            }
        }

        /// <summary>
        /// Gets or sets the hobby of the chosen guest
        /// </summary>
        public string Hobby
        {
            get
            {
                return this.hobby;
            }

            set
            {
                this.hobby = value;
            }
        }

        /// <summary>
        /// Returns a text representation of the Chosen object.
        /// </summary>
        /// <returns>
        /// A text representation of the Chosen object.
        /// </returns>
        public override string ToString()
        {
            return string.Format("((chosen (id {0}) (name {1}) (hobby {2}))", this.id, this.name, this.hobby);
        }

    }
}
